package ventas;

import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;

import org.junit.Before;
import org.junit.Test;

import sucursal.Stock;
import exceptions.VentasException;

public abstract class VentaConEnvioTest extends VentaTest {

	@Before
	public void setUp() throws Exception {
		super.setUp();
	}
	

	
	/**
	 * este test demuetras que es es una venta con envio
	 * a domicilio.
	 */
	@Override
	@Test
	public void ventaConEnvioTest() throws VentasException{
		assertEquals(true,this.getSut().soyUnaVentaConEnvio());
	}
	
	/**
	 * este test demuetra que los productos fueron comprasdos.
	 */
	@Test
	public void seRealizoConExitoTest() throws VentasException{
		this.getSut().realizarCompra();
		assertEquals(true,this.getSut().seRealizoConExito());
	}
	
	@Test
	public void seDevolvieronProductosTest(){
		VentaConEnvioAPagar venta= (VentaConEnvioAPagar) this.getSut();
		venta.devolverProductos();
		verify(this.getSucursalDeLACompra()).agregarStockAlStockDeSucursal(
				any(Stock.class));
		
	}
	
	/**
	 * Este test demuestra que no se a podido crear una venta 
	 * con envio pagadado ya que ya era una venta con envio
	 * pagado.
	 * @throws VentasException
	 */
	@Override
	@Test(expected = VentasException.class)
	public void ventaTransformadaTest() throws VentasException{
		this.getSut().realizarCompra();
		this.getSut().enviarVentaRealizada().soyUnaVentaConEnvio();
		
	}


}
